Dave O Brien's profile

Haptic Navigation Assist

The use of haptic feedback in technology isn’t new. It’s been happening for quite some time. It’s as common as it is uncommon. Basic applications such as video game controllers and mobile phones to more recent explorations such as air vortex rings show the disparity in it’s implementation. In recent times we have seen it come back into consumer focus with the Apple watch and the recent energy around VR.
 
Haptic tech fascinated me for many reasons, it seemed to me like something that wasn’t being explored extensively ( at least not among my circles ). As well as this it seemed clear to me that this kind of cheap and mostly straight forward tech would be incredible at the very most tackling problems which needed something a little extra and at the very least able support existing solutions to further increase their use. On top of all this and maybe the most important was how accessible this tech can be. While it could reinforce decisions for the visually able, it could help present an entire situation to the impaired. There have been some interesting studies into the use of haptic feedback to help with driving.
If one were to think about an area where haptics could be most beneficial, it would be reasonable to suggest transport. This could happen in a few ways, the most obvious would be using the steering wheel or other common components such as a seat to inform the user. However when you begin to branch into this side of haptics, where multiple motors are daisy-chained with the intension of designing vibrating patterns, then referring to it as tactile animation would be a more useful way to think about it. This has been demonstrated by Oliver Schneider. Coupling a car, or bike with the addition of haptic tech is a distraction free proposal which paired with audio feedback, allows you to focus on the road. To stretch out the idea a little further, it could help assist even with autonomous driving. For example it could transition the hand off process with haptics.
 
Beginning
 
I took on this side project out of curiosity and an eagerness to experiment in a domain that I was not all that well acquainted with. To begin, in a very high level way, I outlined the basics of what I needed. Which was three things. A centralized brain, a way to transfer data wirelessly and responsive components. 
 
Or put simply I needed…
Thankfully, phones these days are loaded with all sorts of useful sensors and ways to talk to other devices so to satisfy the brain part of the equation, developing an app which had a map to give directions would be just the ticket!
I had no experience with Bluetooth prior to this project and would soon find out that my life was better without it. It seemed like the best option for this project seen as I may need to have Bluetooth and WiFi options working at the same time on different devices ( router and Feather ). On top of being the only wireless protocol that you can use with iOS without needing special certification.
 
The final piece to the puzzle was clearly the vibrators ( or motor discs ) which would be attached to handlebars. The only question in my mind at this point was to how many I used. To keep things as simple as possible and mitigate the chance of error, I chose to use just the two.
 
With all this in mind I began to research parts and happened upon a wonderful online seller, Adafruit, who specialize in making and distributing hardware of all sorts for DIY hobbyists. I highly recommend starting any search here. I only intended to buy a motor disc but ended up getting everything I needed for the project from here.
Thankfully I had a working knowledge of the technologies I needed to make this work but never brought them together until now. My experience lay in sheepishly attending an Arduino workshop in the past, studying engineering in high school and working on and off with iOS development.
Building
 
This project spanned two cities. It began in San Francisco out of my girlfriends apartment and travelled with me, back home to Ireland. Before leaving SF, I purchased a basic Arduino Uno along with some various supplies to get started. The idea was to use the Uno as a prototype board to test and design how the vibration patterns would work and to use the Feather to try and connect to the iOS app and send information back and forth over Bluetooth. Having both separated worked well as I could load up two completely different sketches, keeping functionality and problems isolated.
Then I turned my attention to the Feather. It’s main priority for now was to simply allow my iPhone to connect to it and await further instructions over Bluetooth LE ( BLE ). Progress was slow but after much headaches and spilling of blood I realized that connecting to the device was actually not as hard as I had once thought. Thankfully your problems are not unique as long as you have an internet connection. Once I had the Feather talking to a sample app on my phone it paved the way for much faster progress which began with integrating the Skobbler SDK which brought with it, very powerful mapping functionality. From my phone I would connect to the Feather ( over UART ) and send very basic things back and forth, mainly strings of text which the Feather would read and perform some checks to see if the text had things like ‘take slight right in 400m’.
With each major component working correctly and map SDK integrated I began to add more functionality to the app. I had some romantic notions on making the app quite fancy but in the interest of time I only added a few buttons. Those were : a connect button ( to connect to the Feather over bluetooth ), a start button ( to log the journey and begin the navigation ) and a log button ( to throw up a panel which would show some detailed route information and other little bits ) 
At this point things were working as planned and the only issues which remained were in optimizing how the iOS app interprets the navigational advice from the SDK in order to send left and right commands to the Feather. This was another tricky area for me as not all the directions are as clear or straightforward as I would have liked them to be for such a simple device it was contributing to. In the end it worked out ok and did it’s job on basic routes. If I had more time I would definitely look into smarter ways to interpret the phrasing the app was giving me so the end result could be more accurate and useful.
Cleaning it all up
 
Vibration effects
One of the beautiful things that came with the motor controller was a huge library of vibrations waveforms. With some simple code you can cycle through each waveform and literally get a feel for each. This saves a ton of time and with the large selection you’re likely to find a pattern for most situations. For example, If I wanted the system to gently greet me once I began my journey then I could string an #84 ( Transition Ramp Up Medium Smooth ) on both left and right motors. On top of all this, it’s possible to string multiple effects together to achieve a more unique pattern as well as have the motors respond to audio. Versatile! 
Enclosure
 
One thing I didn't want this project to look like was a spiders web of components and as a result fitting the typical side project aesthetic. It deserved a better send off.
I searched electronic stores high and low doing my best to scope out enclosures and boxes which would compliment what might eventually be fixed to a bike. I didn't care for fixtures at this point. In the end I resorted to using an uninteresting solution for the time being.
However this truly hurt my soul after a day so to remedy this, I spent some time figuring out what could be done with Cinema4D and maybe even 3D printing. This way I could get as detailed as I liked to help make the enclosure better in both design and functionality. But anything is better than a black box. 
So after a few days I landed on something much finer. Taking inspiration from various real world things, none of which were bike fixtures, but instead mostly watches and the SpaceX Dragon capsule.
Conclusion
 
There are a few things which I would have liked to add. Such as additional motors to help reinforce direction on a bumpy surface. Or worked on designs for an elegant mount and wiring ( perhaps magnetic ) but I tried to be strict and tried to keep it somewhat constrained. 
 
This project isn't a game changer and the tech used isn't state of the art but overall it provides something useful in an elegant way. Im quite happy I set out to do this, I learned that at times it’s best to tackle these things with a certain measure of naivety and beginners mind. If I knew what I knew now back then, there is a good chance I wouldn't have bothered or put off by how intimidating some of the problems were.
 
I did this mostly for fun and as a much needed creative outlet. If there is a lot of interest and demand then who knows, it could go further. This could be a first step in making things a little safer or maybe get others thinking and inspire them to carry the baton and go further than I have.
Haptic Navigation Assist
Published:

Haptic Navigation Assist

Exploring ways to make transport safer in an elegant way

Published: